"""
输入与输出
学习目标：
1. 掌握print()函数的各种用法
2. 学会使用input()函数获取用户输入
3. 掌握格式化输出的多种方法
4. 理解输入数据的类型转换
"""

# ==================== 1. print()基本用法 ====================
print("=" * 50)
print("1. print()函数基本用法")
print("=" * 50)

# 输出字符串
print("Hello, Python!")

# 输出数字
print(100)
print(3.14)

# 输出布尔值
print(True)
print(False)

# 输出多个值（用空格分隔）
print("姓名:", "张三", "年龄:", 18)

print()

# ==================== 2. print()的参数 ====================
print("=" * 50)
print("2. print()函数的参数")
print("=" * 50)

# sep参数：自定义分隔符
print("Python", "Java", "C++", sep=" | ")
print(2025, 10, 13, sep="-")
print("a", "b", "c", sep="")

# end参数：自定义结尾（默认是换行符\n）
print("这是第一行", end=" ")
print("这是同一行的延续")

print("加载中", end="...")
print("完成！")

# 组合使用sep和end
print("红", "黄", "蓝", sep="-", end=" | ")
print("这是颜色列表")

print()

# ==================== 3. 格式化输出方式一：%格式化 ====================
print("=" * 50)
print("3. 格式化输出：%格式化（旧式）")
print("=" * 50)

name = "李四"
age = 20
score = 95.5

# %s - 字符串
print("姓名：%s" % name)

# %d - 整数
print("年龄：%d岁" % age)

# %f - 浮点数
print("分数：%f" % score)

# %.2f - 保留2位小数
print("分数：%.2f" % score)

# 多个占位符
print("我叫%s，今年%d岁，考了%.1f分" % (name, age, score))

print()

# ==================== 4. 格式化输出方式二：format()方法 ====================
print("=" * 50)
print("4. 格式化输出：format()方法")
print("=" * 50)

# 基本用法
print("我叫{}，今年{}岁".format("王五", 22))

# 按位置
print("我叫{0}，今年{1}岁，{0}很高兴认识你".format("赵六", 25))

# 按名称
print("我叫{name}，今年{age}岁".format(name="孙七", age=28))

# 数字格式化
pi = 3.14159265359
print("π的值：{:.2f}".format(pi))
print("π的值：{:.5f}".format(pi))

# 对齐
print("左对齐：{:<10}|".format("Python"))
print("右对齐：{:>10}|".format("Python"))
print("居中：{:^10}|".format("Python"))

print()

# ==================== 5. 格式化输出方式三：f-string（推荐） ====================
print("=" * 50)
print("5. 格式化输出：f-string（Python 3.6+，最推荐）")
print("=" * 50)

name = "周八"
age = 30
height = 1.75

# 基本用法
print(f"我叫{name}，今年{age}岁")

# 可以在大括号内进行计算
print(f"明年我就{age + 1}岁了")
print(f"我的身高是{height}米，也就是{height * 100}厘米")

# 格式化数字
price = 99.5
print(f"价格：¥{price:.2f}")

# 表达式
a = 10
b = 20
print(f"{a} + {b} = {a + b}")
print(f"{a} × {b} = {a * b}")

# 调用函数
word = "python"
print(f"大写：{word.upper()}")
print(f"首字母大写：{word.capitalize()}")

print()

# ==================== 6. input()获取用户输入 ====================
print("=" * 50)
print("6. input()函数获取用户输入")
print("=" * 50)

# 基本用法（返回字符串）
print("请输入你的姓名：", end="")
user_name = input()
print(f"你好，{user_name}！")

# 带提示信息的输入
user_age = input("请输入你的年龄：")
print(f"你输入的年龄是：{user_age}")
print(f"输入的数据类型是：{type(user_age)}")  # 注意：input()返回的是字符串

print()

# ==================== 7. 输入数据的类型转换 ====================
print("=" * 50)
print("7. 输入数据的类型转换")
print("=" * 50)

# 输入整数
age_str = input("请输入你的年龄（整数）：")
age_int = int(age_str)  # 字符串转整数
print(f"10年后你{age_int + 10}岁")

# 输入浮点数
height_str = input("请输入你的身高（米）：")
height_float = float(height_str)  # 字符串转浮点数
print(f"你的身高是{height_float}米，即{height_float * 100}厘米")

# 一步完成输入和转换
weight = float(input("请输入你的体重（公斤）："))
bmi = weight / (height_float ** 2)
print(f"你的BMI指数是：{bmi:.2f}")

print()

# ==================== 8. 实战案例：个人信息采集 ====================
print("=" * 50)
print("8. 实战案例：个人信息采集系统")
print("=" * 50)

print("请填写您的个人信息：")
print("-" * 50)

# 采集信息
name = input("姓名：")
age = int(input("年龄："))
city = input("城市：")
hobby = input("爱好：")
is_student = input("是否是学生（是/否）：")

# 显示信息
print("\n" + "=" * 50)
print("个人信息确认")
print("=" * 50)
print(f"姓名：{name}")
print(f"年龄：{age}岁")
print(f"城市：{city}")
print(f"爱好：{hobby}")
print(f"学生：{is_student}")
print("=" * 50)

print()

# ==================== 9. 实战案例：简单计算器 ====================
print("=" * 50)
print("9. 实战案例：简单加法计算器")
print("=" * 50)

print("请输入两个数字进行相加：")
num1 = float(input("第一个数字："))
num2 = float(input("第二个数字："))

result = num1 + num2

print(f"\n计算结果：{num1} + {num2} = {result}")

print()

# ==================== 10. 特殊输出 ====================
print("=" * 50)
print("10. 特殊输出技巧")
print("=" * 50)

# 输出特殊字符
print("制表符：\t内容对齐")
print("换行符：\n第二行")
print("反斜杠：C:\\Users\\Python")

# 原始字符串（不转义）
print(r"原始字符串：\n \t 不会转义")

# 重复输出
print("=" * 30)
print("*" * 20)
print("-" * 40)

# 进度条效果
print("[" + "█" * 10 + " " * 10 + "] 50%")

print()

# ==================== 总结 ====================
print("=" * 50)
print("✨ 本节要点总结")
print("=" * 50)
print("""
1. print()函数用于输出，支持多个参数
2. sep参数控制分隔符，end参数控制结尾
3. 格式化输出三种方式：%、format()、f-string
4. 推荐使用f-string（最简洁直观）
5. input()函数获取用户输入，返回字符串类型
6. 使用int()、float()等转换输入的数据类型
7. 输入输出是程序与用户交互的基础
""")
print("=" * 50)

